package com.aqie.easy.array;

/**
 * 1089 复写零
 * 将该数组中出现的每个零都复写一遍，并将其余的元素向右平移。不能超过数组长度
 * todo
 */
public class DuplicateZeros {
    public void duplicateZeros(int[] arr) {
        int n = arr.length;
        int i = 0, j = 0;
        while (j < n) {
            if (arr[i] == 0) ++j;
            ++i;
            ++j;
        }
        --i;    // i 回到最后一次合法的位置
        --j;    // j 同理，但 j 仍可能等于 n（例如输入 [0]）
        while (i >= 0) {
            if (j < n) arr[j] = arr[i];
            if (arr[i] == 0) arr[--j] = arr[i];
            --i;
            --j;
        }

    }
}
